LinuC-2 - 201試験 - 2.04:システムの保守と運用管理 - 2.04.5 死活監視、リソース監視、運用監視ツール

Last Update : August 21 2022 17:47:18

     

a. モニターツールや計測ツールを使用してITインフラの使用を監視する

1. システム全体の負荷を監視

$ vmstat
procs ----------memory------ --swap-- --io-- -system- ------cpu-----
r  b swpd   free buff  cache  si   so bi  bo  in   cs us sy id wa st
2  0    0 421300 3344 1592944  0    0  9   4 125  101  0  0 99  0  0

● vmstat 説明
 項目名  意味
 %usr アプリケーション(ユーザーレベル)
 r 実行中または実行待ち」(runnable)のプロセス数
 b uninteruptibleなIO待ちのプロセス数(r+bがロードアベレージに等しい)
 swpd スワップされたメモリ
 free 空きメモリ。これは小さくてもよい。free+buff+cacheが少なければ問題
 buff バッファキャッシュ
 cache ページキャッシュ
 si スワップイン
 so スワップアウト
 bi ブロックデバイスからの読み込み
 bo ブロックデバイスへの書き込み
 in 1秒間の割り込み回数(タイマー含む)
 cs 1秒間のコンテキストスイッチ回数
 us ユーザーCPU時間(カーネル以外が使用したCPU使用率)
 sy システムCPU時間(カーネルが使用したCPU使用率)
 id アイドル時間
 wa IO待ち時間
 st 仮想マシンに盗まれた時間

※ メモリの単位はK(キロバイト)。--unit Mでメガバイト単位に変更できる。


【 OOM Killer 】(Out of Memory Killer)
システムが実メモリーと仮想メモリー空間(スワップ領域)を使い切り、必要なメモリー領域を新たに確保できない場合に、プロセスを強制終了させて空きメモリーを確保する、Linuxカーネルの仕組みです。この仕組みをOOM Killerと呼びます。
メモリが不足してシステムが停止する恐れがある際、メモリリソースを多く消費しているプロセスを強制的に停止します。
OOM Killerはシステムのメモリが足りなくなった時に、プロセス毎の優先度やスコアをもとにしてプロセスを停止し、システム全体が停止してしまうことを防ぐための機能です。

● 終了したプロセスの確認
# cat /var/log/messages | grep Killed
Nov 8 13:22:24 localhost kernel: Killed process 17143 (java), UID 1001, total-vm:7790724kB, anon-rss:4108910kB, file-rss:6822kB, shmem-rss:0kB

● OOM Killerによるプロセス停止の回避
プロセス毎の優先度は/proc/プロセスID/oom_score_adj、スコアは/proc/プロセスID/oom_scoreで確認できます。
例えば、httpd(Apache HTTP Server)の優先度とスコアは以下のように確認します。以下の例では優先度が0でスコアも計算されており、プロセス停止の対象となりうることが分かります。

$ ps -ef | grep httpd
root 1460 1 0 8月11 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND apache 1594 1460 0 8月11 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

$ cat /proc/1460/oom_score_adj
0

$ cat /proc/1460/oom_score
667

優先度を変更するためには、上記パラメータを-1000にセットする必要があります。手動で、もしくはプロセス起動スクリプトで変更する場合は以下のようにセットします(プロセスIDは適宜取得する必要あり)。

# echo -1000 > /proc/1460/oom_score_adj

systemd(systemctl)を使って起動しているサービスでは、ユニットファイルの[Service]セクションにOOMScoreAdjust=-1000オプションを追記するだけでOKです。例えばhttpdの場合は以下のような感じで設定します。ユニットファイル変更後にはsystemctl daemon-reloadでユニットファイルをリロードしてからサービスを再起動する必要があります。

# systemctl status httpd
● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-11-07 00:39:14 UTC; 2 days ago ...

[Service]セクションに追記します。

# vi /usr/lib/systemd/system/httpd.service
...
[Service]
...
OOMScoreAdjust=-1000
...

hhtpdサービスを再起動します。

# systemctl daemon-reload
# systemctl restart httpd


b. システム構成でのキャパシティの限界点を予測する


c. リソース使用量の増加率を観察する


d. リソース使用量の傾向をグラフ化する


e. 監視ツール

1.Icinga2

Icinga2は、Nagiosという監視ツールから派生して開発されたオープンソースの監視ツールです。Icinga2では監視の種類も、pingやhttp、smtp、dns等の基本的なプロトコルや、CPUやメモリ、ディスク容量等のリソース監視など様々な監視を行うことができます。

2.Nagios

Nagiosとは、オープンソースの統合監視ソフトウェアの中でも歴史のある監視ツールです。システムとネットワークの稼働状態を監視する機能を提供します。サーバとネットワーク機器の稼働状態を監視する機能を提供します。異常を検知すると、それを管理者にメールで報告する機能などを備えています。
基本機能は、サーバにPINGを飛ばしての「死活チェック」と、クライアントとしてサーバにアクセスして稼働状況を監視する「アクティブ・チェック」のみです。

3.collectd

Linuxサーバでcollectdを起動すると、定期的にサーバの統計情報を収集してデータベースに保存します。保存されたデータは、collectdに含まれるウェブインタフェース(CGI)を使用して参照することが可能です。収集データはグラフ化して表示されます。
例えば、Linuxサーバの基本的な統計情報では、CPU使用率・ディスクパーティションの使用量・ネットワークインタフェースの通信量・ロードアベレージ・メモリ使用量・スワップ使用量・TCPコネクション数等の統計情報を収集してグラフ化することができます。

4.MRTG

MRTGは、SNMPで定期的にポーリングを行い、収集したデータをグラフ化するソフトウェアです。
MRTGは、グラフ部分をPNGフォーマット、付帯情報をHTMLフォーマットで出力します。
情報の取得、グラフ化に特化しており、監視などの機能はありません。データ、設定はすべてテキストファイルで行います。

5.Cacti

Cactiは、SNMPを使用し、サーバやネットワーク機器から取得した情報をグラフ化するモニタリング・ツールです。

6.Zabbix

Zabbixは、サーバ、ネットワーク、アプリケーションを集中監視するための統合監視ソフトウェアです。
Zabbixは、状態監視、障害検知、通知機能を備えた監視ツールです。ネットワークの監視に適したSNMPとSNMPトラップに対応していています。また、Zabbixエージェントと呼ばれる独自エージェントを監視対象のサーバにインストールすることにより、詳細なサーバ監視を行うこともできます。そのため、システム全体をZabbixサーバだけで監視することが可能です。


z. 出題範囲概要

概要 :
  • システム監視の重要性を理解している。
  • 監視対象に応じて適切な監視手法を選択できる。
  • 運用監視ツールの導入メリットと種類を理解し、適切にシステムを監視できる。

詳細 :
  • システムの障害と予兆についての関連性を知っている。
    リソースの枯渇、過負荷、異常停止、結果異常、OOMKiller
    システムの死活、サービスの死活
  • 死活監視の対象と手法
    レスポンス、ログ監視(サーバー、サービス、プロセス、ネットワーク)
  • リソース監視の対象と手法
    ログ監視、使用率監視(CPU、メモリ、ストレージ、通信量)、 SNMP
  • 運用監視ツールによる監視作業の標準化と自動化
    標準管理項目、標準のしきい値、標準のアラート方式
    監視方式のパッケージ化、複数台の監視
  • 主要な監視ツールを知っている。
    Icinga2、Nagios、collectd、MRTG、Cacti、Zabbix

  [ 例題 ] 


         

    www.it-shikaku.jp